#include "init.h"
#include "teplota.h"

#include <math.h>
/*
 * Cteni dat z ADC
*/

#define rozliseni 0.0033
#define A 0.003354016
#define B 0.0002569850
#define C 0.000002620131
#define D 0.00000006383091
#define refOdpor 1480


int cteniADC(void)                              // Mozna pozdeji predelat na interrupt
{
	ADCSRA|=(1<<ADEN);
    ADCSRA|=0x40;           // Start prevodu
    while (!(ADCSRA & 0x10));   //  Cekani, doku neni dokoncen prevod
    ADCSRA|=0x10;
    return ADCW;                // Registry ADCL a ADCH v jednom
}

/*
 * Vypocet teploty pomoci Stein-Hartovo aproximace
*/
double vypocetTeploty(int a)
{
        double odpor;
        double mezi;
        double teplota;
        double napeti;
        double x;
        
        napeti=a * rozliseni;           // Prevod na napeti

        odpor = (7500 - napeti*refOdpor)/napeti;                // Vypocet odporu
        x=odpor/4700;                                   // Pomer mezi odporem a referecnim odporem - pri 25 stupnich
        mezi = (A + B*log(x)+ C*(log(x)*(log(x))) + D*(log(x)*log(x)*(log(x)))); // Vypocet teploty
        teplota=(1/mezi)-273.15;                // Precpocet na stupne Celsia
        return teplota;
}


int nacteniTeploty(){
         
         
         zaznam.teplota+=vypocetTeploty(cteniADC());
         zaznam.prubeh++;
		 if(zaznam.prubeh==200){
		 	return 1
		}
		return 0;      
       
}
